(function () {
    "use strict";

    angular.module('core').factory('pedidoAbastecimentoService', factory);
    factory.$inject = ['$http', '$q'];

    function factory($http, $q) {

        var _get = function (id) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/get', id)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        var _getAll = function (args) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/getall', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _getAllProdutos = function (args) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/getAllProdutos', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _prepareNewByPlano = function (args) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/PrepareNewByPlano', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _count = function (args) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/count', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _prepareNew = function () {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/prepareNew')
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        var _prepare = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/prepare', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        var _prepareNewPrecoPedidoAbastecimento = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/prepareNewPrecoPedidoAbastecimento', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _save = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/save', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _ConferirItem = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/ConferirItem', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };


        var _ReverterConferenciaItem = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/ReverterConferenciaItem', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        
        var _close = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/close', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _closeConferencia = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/CloseConferencia', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        
        var _gerarConferencia = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/GerarConferencia', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        var _cancel = function (item) {
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/cancel', item)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };
        var _delete = function (id) {
            var args = { id: id };
            var deferred = $q.defer();
            $http.post('/PedidoAbastecimento/delete', args)
                .success(function (data) { deferred.resolve(data); })
                .error(function (data, status, headers, config) { deferred.reject(data); });
            return deferred.promise;
        };

        return {
            get: _get,
            getAll: _getAll,
            getAllProdutos: _getAllProdutos,
            count: _count,
            prepareNew: _prepareNew,
            prepare: _prepare,
            prepareNewPrecoPedidoAbastecimento: _prepareNewPrecoPedidoAbastecimento,
            ReverterConferenciaItem: _ReverterConferenciaItem,
            close: _close,
            save: _save,
            cancel: _cancel,
            closeConferencia: _closeConferencia,
            conferirItem: _ConferirItem,
            gerarConferencia: _gerarConferencia,
            prepareNewByPlano: _prepareNewByPlano,
            delete: _delete
        };
    }

})();


